grid coordinates
Grid coordinates can be offset and/or inverted.

Consider a 100x100 pixel grid created by:

XgrCreateGrid ( @grid, 0, 200, 200, 100, 100, window, 0, 0 )

The upper-left : lower-right corners of this grid are located at window coordinates (200,200:299,299) , local coordinates (0,0:99,99) , and grid coordinates (0,0:99,99) .

When a grid is created, its grid coordinates and local coordinates are the same, (0,0:w-1,h-1) , where w = width and h = height in pixels.

But XgrSetGridBoxGrid ( grid, x1Grid, y1Grid, x2Grid, y2Grid ) can redefine the grid coordinates of the upper-left : lower-right corners of a grid to offset its grid coordinates horizontally and/or vertically from its local coordinates, as well as invert horizontally and/or vertically.

But grid coordinates are always measured in 1 pixel units, and XgrSetGridBoxGrid() cannot move grids or alter grid coordinates scale. So any time XgrSetGridBoxGrid() is called with x2Grid and/or y2Grid arguments that are not consistent with grid width and/or height, x2Grid and/or y2Grid are computed as follows:

IF (x1Grid <= x2Grid) THEN
x2Grid = x1Grid + (width - 1)
ELSE
x2Grid = x1Grid - (width - 1)
END IF

IF (y1Grid <= y2Grid) THEN
y2Grid = y1Grid + (height - 1)
ELSE
y2Grid = y1Grid - (height - 1)
END IF


scaled coordinates
Scaled coordinates can be offset and/or inverted and/or scaled.

A pair of floating-point scaled coordinates can be assigned to the upper-left : lower-right corners of every grid. For example, scaled coordinates (-320,+85:+14495,-40) could be assigned to the (upper-left:lower-right) corners of the grid by:

XgrSetGridBoxScaled ( grid, -320, 85, 14495, -40 )

The corners of this grid are now:

Coordinates Upper-Left Lower-Right

Local (0, 0) (99, 99)
Scaled (-320, +85) (+14495, -40)